//  写实际请求的地方

import { createRequest, createSSERequest } from './index'
import { AGENT_TYPE_LIST, AGENT_BASIC_INPUTS, DURATION } from '../publicConfig';


/**
 * 向agent发送信息
 * @param data Object (必须） 需要发送的消息对象
 *       包含：
 *          1. inputs：agent所需参数
 *          2. type: agent类型名称，需保持和AGENT_TYPE_LIST中的一致，详情可查看AGENT_TYPE_LIST
 *          3. query: 发送的消息
 * @param callback Function（可选） 收到消息后的回调函数
 * @param flush String （可选） 回调函数的调用时机
 *        every：对回复的消息数组中的每个元素进行处理，需要返回it；
 *        post（默认值）：在消息数组中的每个元素进行处理后执行一次
 */
export const sendMessageToAgent = (data, callback, signal) => {
    console.log('AI///',data, callback, signal)
    let type = data.type? data.type: AGENT_TYPE_LIST[0].type
    // identity：身份，system:系统，teacher:教师，student：学生
    let identity = data.identity? data.identity: 'system'
    delete data.type
    if (data.inputs === undefined) {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            userId: 'utaha456'
        }
    } else {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            ...data.inputs,
            userId: 'utaha456'
        }
    }
    
    createSSERequest({
        signal,
        url: type.includes('/ai/dify') ? type : `/ai/dify/${identity}/${type}/chatMessages`,
        method: 'post',
        headers: {
            'Content-Type': 'application/json',
            Accept: 'text/event-stream'
        },
        body: JSON.stringify(data)
    }, callback)
}
/**
 * 将文字转为语音
 * @param data Object (必须） 需要发送的消息对象
 *       包含：
 *          1. type: agent类型名称，需保持和AGENT_TYPE_LIST中的一致，详情可查看AGENT_TYPE_LIST
 *          2. text: 发送的消息
 * @return Promise 返回一个Promise实例，包含响应信息，响应信息结构为：
 *          {
 *            "code": ,
 *            "message": "",
 *            "data": {
 *                  "endpoints": [
 *                      {
 *                          "url": ""
 *                      }
 *                  ],
 *                  "group": "cf-nel",
 *                  "max_age": 
 *             }
 *          }
 */
export const textGenerateAudio = (data) => {
    let type = data.type? data.type: AGENT_TYPE_LIST[0].type
    delete data.type
    if (data.inputs === undefined) {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            userId: 'utaha456'
        }
    } else {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            ...data.inputs,
            userId: 'utaha456'
        }
    }
    return createRequest({
        url: `/ai/dify/${type}/textToAudio`,
        method: 'post',
        headers: {
            "Content-Type": "application/json"
        },
        data: JSON.stringify(data)
    })
}
/**
 * 
 * @param {Object} data 请求配置项：type为ai类型，formData为携带的数据
 */
export const audioGenerateText = (data) => {
    let type = data.type? data.type: AGENT_TYPE_LIST[0].type
    delete data.type
    console.log(data)
    if (data.inputs === undefined) {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            userId: 'utaha456'
        }
    } else {
        data.inputs = {
            ...AGENT_BASIC_INPUTS,
            ...data.inputs,
            userId: 'utaha456'
        }
    }
    return createRequest({
        url: `/ai/dify/${type}/audioToText`,
        method: 'post',
        headers: {
            'Content-Type': 'multipart/form-data',
        },
        data: data
    })
}
/**
 * @param data Object(必须)
 */
const createProject = (data) => {

}